Indiana Grades 6-8 Computer Science Academic Standards

Data and Information

Algorithmic Problem-Solving

Use the basic steps in algorithmic problem-solving to design solutions (e.g., problem statement and exploration, examination of sample instances, design, implementing a solution, testing, and evaluation).

Long Description

The students should be able to use algorithmic problem-solving skills to design a solution for a given problem. This strategy consists of six steps: reading and comprehending the problem statement, selecting theoretical concepts that could be applied, describing the problem qualitatively, formalizing a solution strategy, testing the solution, and evaluating the effectiveness of the solution. They should then be able to discuss their solution with their classmates.

Explanation For Teachers

An algorithm is essentially a series of instructions used to complete a task. Because computers cannot make decisions without a set of clear instructions, all computers need algorithms to complete tasks. Every computer program is made up of algorithms.

People unknowingly use algorithms in many everyday situations. When you wake up in the morning and follow a set routine, you are essentially executing the steps of an algorithm you designed to prepare you for the day. Other examples of algorithms include recipes, procedures, and instructions.

Designing algorithms helps students to think logically and critically about problems and challenges them to design solution. Students should also learn how to use symbols to represent these algorithms because this will help students communicate complex ideas.

Purpose

Algorithms teach us to think critically about how we approach problems in our life: Are our strategies for completing tasks efficient and logical? Are we devoting too much time to a certain task? Is there a better strategy we could use? Students will benefit from implementing problem-solving processes in their future careers and everyday lives.

Objectives

  • Explore the problem
  • Examine sample instances of the problem
  • Design a possible solution
  • Implement the solution
  • Test the solution
  • Evaluate the solution

Alternative Approaches

  • Make a worksheet with a simple problem and have the students write an algorithm to solve the problem. For example, have the students write an algorithm to prepare the perfect PB&J.
  • Explore the Codebreakers of Bletchley Park and the Enigma Machine used during World War II. (Also applies to IC.2).
  • Use Alice Programming as part of a story-telling exercise in an English or Social Studies course. (Also applies to standards DI.5, PA.3, NC.1, NC.2).

Parallelization

Describe the process of parallelization as it relates to problem solving.

Long Description

Students should understand the concepts behind parallelization, the use of two or more processors (e.g., cores, computers) in combination to solve a single problem. Normally a computer must complete tasks in order and one at a time. To increase the speed at which processes can be completed, parallel computing can be implemented. Parallel computing aims to break down processes into discrete parts that different cores of a processor can work on at the same time.

Explanation For Teachers

Parallel computing is when we have a process that needs to do multiple tasks at the same time. We can use the different cores of a processor to work on different tasks at the same time. Normally, instructions would be carried out in sequence, one at a time. Parallelization is the process of dividing the process up into tasks that can be accomplished at the same time, so that the computer does not need to wait as long to move on.

Purpose

Students will benefit from an understanding of breaking down a problem into different parts and distributing the work evenly amongst a team. This will increase teamwork and understanding of similarities between how humans process tasks and how computer process tasks.

Objectives

  • Understand the process of solving a problem through parallelization
  • Use parallelization to solve a problem

Data

Represent data in various ways (e.g., numbers, text, pictures) and use visual representations of problems and data.

Long Description

Students should be able to read and represent data in a variety of ways (e.g., text, sounds, pictures, and numbers), and use different visual representations of problems, structures, and data (e.g., graphs, charts, network diagrams, flowcharts).

Explanation for Teachers

We collect data from samples, organize this data using graphs and charts, and then utilize statistical reasoning to make conclusions about an entire population. Data is an important part of statistics.

Purpose

Students will benefit from an ability to express ideas in a multitude of visual representations. Students will also gain the ability to interpret various visual representations. Students can make and interpret graphs and flowcharts to integrate in math, science, and English courses. Students will also gain an appreciation for evaluation of data.

Objectives

  • Convert decimal numbers into binary
  • Make visual representations of data such as graphs and charts on computer (or on paper)

Abstraction and Hierarchy

Understand the notion of hierarchy and abstraction in computing including high-level languages, translation, instruction set, and logic circuits.

Long Description

Students should understand that hierarchies are a very common structure in computer software. For example, file systems provided by operating systems have a top-level directory that contains sub-directories such as "Program Files" and "Documents and Settings". These sub-directories often contain their own sub-directories.

Abstraction is a method of representing concepts, systems, or problems in a way that hides the complex, in-depth details to emphasize the main idea. ( source[1])

Explanation for Teachers

Abstraction: Computers at a hardware level are only able to understand binary expressions, and all data (e.g., numbers, characters) has to be represented using binary. The exact method a computer uses to store this data does not affect the user; therefore, this technical information is hidden from users. This an example of abstraction. Computer scientists often use abstraction when writing programs. For example, a programmer could create a program that pulls a file from the internet. Perhaps another programmer is working on her own project that allows users to draw on pictures from the internet. She could incorporate that code into her project to pull pictures from the internet and then write the code for drawing on the pictures by herself. If the first programmer wrote his code well, his implementation would be abstracted, meaning the second programmer would not need to understand all the technical details about how the first programmer's code works to incorporate it into her own code project.

Hierarchy: Many modern programming languages allow programs to be built from objects, which are collections of pieces of data and functions to interact with that data. An example object could be called motor-vehicle, which would contain all things common to motor vehicles, such as an engine, and functions to interact with the motor vehicle, such as start() and drive(). The issue is that motor-vehicle will not contain variables for elements that are not common to all motor vehicles, such as doors or the number of wheels. To fix this, programming languages allow for the creation of objects such as car or motorcycle which inherit all of the attributes of motor-vehicle but also include data specific to themselves. The relationship between these types of objects is hierarchical.

Abstraction

If someone asked you to go see a movie with them and you told them that you could not because you had to grade papers, you would be using a form of abstraction. When you said you had to grade papers, you left out all of the small details. Instead of saying that you needed to check every answer on the quizzes against the answer key, mark down the score for each quiz, and enter those scores into the gradebook. You simply abstracted all of those actions into a single action called “grading” because all of the details were not of importance to the “end user” or, your friend who asked you to go see a movie.

Hierarchy

We will use a math teacher as an example of abstraction and hierarchy. All math teachers at a school are teachers, and all teachers are employees. The hierarchy would look like this: employee → teacher → math teacher. The school might have a requirement that says all employees need to have a bank account set up for direct deposit. However, the specific requirements for a math teacher also include “Prepare students for the math portion of standardized tests”. Even though all math teachers will need to have a bank account set up, we leave those requirements out from the math teacher’s requirements, and allow it to be handled by the employee level of the hierarchy. We do not put the math teacher’s requirements in the teacher or employee level because not all employees need to prepare students for the math portion of standardized tests.

Purpose

Students are able to determine small steps in a large process. This could be applied to large projects or homework assignments as students will be able to recognize small progresses leading to a goal. Students will also be able to visualize the complexities of a large system via its parts.

Objectives

  • Explain how abstraction masks the in-depth details of a process to focus on the main point. For example, when you type “2+2 = 4” in a computer, the computer will process that as something different (binary numbers)
  • Demonstrate an understanding of hierarchy by sorting out a file system correctly
  • Demonstrate an understanding of how the computer processes information is a hierarchy by sorting out a graph correctly

Alternative Approaches

  • Demonstrate abstraction through binary bracelets. This will show students that everything they interact with on a computer is an abstraction of the binary numbers the computer works with.
  • Demonstrate hierarchy in a science class, through topics such as taxonomy or hierarchical organization biology.

Computational Thinking

Demonstrate interdisciplinary applications of computational thinking and interact with content-specific models and simulations to support learning and research.

Long Description

Students should be able to apply the principles of computational thinking to interdisciplinary subjects. They should be able to interact with content-specific models and simulations to support learning and research of any subject.

Explanation for Teachers

Computational thinking is a set of problem-solving methods that involve expressing problems and their solutions in ways that a computer could execute. Even something as simple as reflecting back on an experience multiple times can be considered computational thinking because it is both retrospective and recursive.

Purpose

Students will gain the knowledge of how computers are involved in almost every discipline. This will be helpful to students in using computers in other courses to create reports or projects. Computational thinking can make other areas of STEM more approachable.

Objectives

  • Including computational thinking into problem solving for other disciplines
  • Showing how computational thinking is already in ways students learn
  • Presenting computational thinking in scenarios not related to computer science
  • Formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by a computer.

Alternative Approaches

  • Teaching trial and error techniques.
  • Explaining that an algorithm is just steps to complete a task .